ZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9jcHUvTWFrZWZpbGUgYi9hcmNoL2kzODYvY3B1L01ha2VmaWxlCmluZGV4IGM2NThjNmUuLmJiMGE0OGYgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9jcHUvTWFrZWZpbGUKKysrIGIvYXJjaC9pMzg2L2NwdS9NYWtlZmlsZQpAQCAtMjksNyArMjksNyBAQAogTElCCT0gJChvYmopbGliJChDUFUpLmEKIAogU1RBUlQJPSBzdGFydC5vIHN0YXJ0MTYubyByZXNldHZlYy5vCi1DT0JKUwk9IHNlcmlhbC5vIGludGVycnVwdHMubyBjcHUubworQ09CSlMJPSBpbnRlcnJ1cHRzLm8gY3B1Lm8KIAogU1JDUwk6PSAkKFNUQVJUOi5vPS5TKSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykgJChDT0JKUykpCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L3NlcmlhbC5jIGIvYXJjaC9pMzg2L2NwdS9zZXJpYWwuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcwMjVhMy4uMDAwMDAwMAotLS0gYS9hcmNoL2kzODYvY3B1L3NlcmlhbC5jCisrKyAvZGV2L251bGwKQEAgLTEsNTA2ICswLDAgQEAKLS8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZQotICoKLSAqIChDKSBDb3B5cmlnaHQgMjAwMAotICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICovCi0KLS8qCi0gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGR1YWwtbGljZW5zZWQuICBZb3UgbWF5IHVzZSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIG9yIHVuZGVyIHRoZSBsaWNlbnNlIGJlbG93LgotICoKLSAqIFRoaXMgc291cmNlIGNvZGUgaGFzIGJlZW4gbWFkZSBhdmFpbGFibGUgdG8geW91IGJ5IElCTSBvbiBhbiBBUy1JUwotICogYmFzaXMuICBBbnlvbmUgcmVjZWl2aW5nIHRoaXMgc291cmNlIGlzIGxpY2Vuc2VkIHVuZGVyIElCTQotICogY29weXJpZ2h0cyB0byB1c2UgaXQgaW4gYW55IHdheSBoZSBvciBzaGUgZGVlbXMgZml0LCBpbmNsdWRpbmcKLSAqIGNvcHlpbmcgaXQsIG1vZGlmeWluZyBpdCwgY29tcGlsaW5nIGl0LCBhbmQgcmVkaXN0cmlidXRpbmcgaXQgZWl0aGVyCi0gKiB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucy4gIE5vIGxpY2Vuc2UgdW5kZXIgSUJNIHBhdGVudHMgb3IKLSAqIHBhdGVudCBhcHBsaWNhdGlvbnMgaXMgdG8gYmUgaW1wbGllZCBieSB0aGUgY29weXJpZ2h0IGxpY2Vuc2UuCi0gKgotICogQW55IHVzZXIgb2YgdGhpcyBzb2Z0d2FyZSBzaG91bGQgdW5kZXJzdGFuZCB0aGF0IElCTSBjYW5ub3QgcHJvdmlkZQotICogdGVjaG5pY2FsIHN1cHBvcnQgZm9yIHRoaXMgc29mdHdhcmUgYW5kIHdpbGwgbm90IGJlIHJlc3BvbnNpYmxlIGZvcgotICogYW55IGNvbnNlcXVlbmNlcyByZXN1bHRpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi0gKgotICogQW55IHBlcnNvbiB3aG8gdHJhbnNmZXJzIHRoaXMgc291cmNlIGNvZGUgb3IgYW55IGRlcml2YXRpdmUgd29yawotICogbXVzdCBpbmNsdWRlIHRoZSBJQk0gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBwYXJhZ3JhcGgsIGFuZCB0aGUKLSAqIHByZWNlZGluZyB0d28gcGFyYWdyYXBocyBpbiB0aGUgdHJhbnNmZXJyZWQgc29mdHdhcmUuCi0gKgotICogQ09QWVJJR0hUICAgSSBCIE0gICBDT1JQT1JBVElPTiAxOTk1Ci0gKiBMSUNFTlNFRCBNQVRFUklBTCAgLSAgUFJPR1JBTSBQUk9QRVJUWSBPRiBJIEIgTQotICovCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2luY2x1ZGUgPGNvbW1vbi5oPgotI2luY2x1ZGUgPHdhdGNoZG9nLmg+Ci0jaW5jbHVkZSA8YXNtL2lvLmg+Ci0jaW5jbHVkZSA8YXNtL2libXBjLmg+Ci0KLSNpZmRlZiBDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8KLSNpbmNsdWRlIDxtYWxsb2MuaD4KLSNlbmRpZgotCi1ERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKLQotI2RlZmluZSBVQVJUX1JCUiAgICAweDAwCi0jZGVmaW5lIFVBUlRfVEhSICAgIDB4MDAKLSNkZWZpbmUgVUFSVF9JRVIgICAgMHgwMQotI2RlZmluZSBVQVJUX0lJUiAgICAweDAyCi0jZGVmaW5lIFVBUlRfRkNSICAgIDB4MDIKLSNkZWZpbmUgVUFSVF9MQ1IgICAgMHgwMwotI2RlZmluZSBVQVJUX01DUiAgICAweDA0Ci0jZGVmaW5lIFVBUlRfTFNSICAgIDB4MDUKLSNkZWZpbmUgVUFSVF9NU1IgICAgMHgwNgotI2RlZmluZSBVQVJUX1NDUiAgICAweDA3Ci0jZGVmaW5lIFVBUlRfRExMICAgIDB4MDAKLSNkZWZpbmUgVUFSVF9ETE0gICAgMHgwMQotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICB8IExpbmUgU3RhdHVzIFJlZ2lzdGVyLgotICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotI2RlZmluZSBhc3luY0xTUkRhdGFSZWFkeTEgICAgICAgICAgICAweDAxCi0jZGVmaW5lIGFzeW5jTFNST3ZlcnJ1bkVycm9yMSAgICAgICAgIDB4MDIKLSNkZWZpbmUgYXN5bmNMU1JQYXJpdHlFcnJvcjEgICAgICAgICAgMHgwNAotI2RlZmluZSBhc3luY0xTUkZyYW1pbmdFcnJvcjEgICAgICAgICAweDA4Ci0jZGVmaW5lIGFzeW5jTFNSQnJlYWtJbnRlcnJ1cHQxICAgICAgIDB4MTAKLSNkZWZpbmUgYXN5bmNMU1JUeEhvbGRFbXB0eTEgICAgICAgICAgMHgyMAotI2RlZmluZSBhc3luY0xTUlR4U2hpZnRFbXB0eTEgICAgICAgICAweDQwCi0jZGVmaW5lIGFzeW5jTFNSUnhGaWZvRXJyb3IxICAgICAgICAgIDB4ODAKLQotCi0jaWZkZWYgQ09ORklHX1NFUklBTF9TT0ZUV0FSRV9GSUZPCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICB8IEZpZm8KLSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLXR5cGVkZWYgc3RydWN0IHsKLQljaGFyICpyeF9idWZmZXI7Ci0JdWxvbmcgcnhfcHV0OwotCXVsb25nIHJ4X2dldDsKLQlpbnQgY3RzOwotfSBzZXJpYWxfYnVmZmVyX3Q7Ci0KLXZvbGF0aWxlIHNlcmlhbF9idWZmZXJfdCBidWZfaW5mbzsKLXN0YXRpYyBpbnQgc2VyaWFsX2J1ZmZlcl9hY3RpdmU9MDsKLSNlbmRpZgotCi0KLXN0YXRpYyBpbnQgc2VyaWFsX2RpdihpbnQgYmF1ZHJhdGUpCi17Ci0KLQlzd2l0Y2ggKGJhdWRyYXRlKSB7Ci0JY2FzZSAxMjAwOgotCQlyZXR1cm4gOTY7Ci0JY2FzZSA5NjAwOgotCQlyZXR1cm4gMTI7Ci0JY2FzZSAxOTIwMDoKLQkJcmV0dXJuIDY7Ci0JY2FzZSAzODQwMDoKLQkJcmV0dXJuIDM7Ci0JY2FzZSA1NzYwMDoKLQkJcmV0dXJuIDI7Ci0JY2FzZSAxMTUyMDA6Ci0JCXJldHVybiAxOwotCX0KLQotCXJldHVybiAxMjsKLX0KLQotCi0vKgotICogTWluaW1hbCBzZXJpYWwgZnVuY3Rpb25zIG5lZWRlZCB0byB1c2Ugb25lIG9mIHRoZSBTTUMgcG9ydHMKLSAqIGFzIHNlcmlhbCBjb25zb2xlIGludGVyZmFjZS4KLSAqLwotCi1pbnQgc2VyaWFsX2luaXQodm9pZCkKLXsKLQl2b2xhdGlsZSBjaGFyIHZhbDsKLQlpbnQgYmRpdiA9IHNlcmlhbF9kaXYoZ2QtPmJhdWRyYXRlKTsKLQotCW91dGIoMHg4MCwgVUFSVDBfQkFTRSArIFVBUlRfTENSKTsJLyogc2V0IERMQUIgYml0ICovCi0Jb3V0YihiZGl2LCBVQVJUMF9CQVNFICsgVUFSVF9ETEwpOwkvKiBzZXQgYmF1ZHJhdGUgZGl2aXNvciAqLwotCW91dGIoYmRpdiA+PiA4LCBVQVJUMF9CQVNFICsgVUFSVF9ETE0pOy8qIHNldCBiYXVkcmF0ZSBkaXZpc29yICovCi0Jb3V0YigweDAzLCBVQVJUMF9CQVNFICsgVUFSVF9MQ1IpOwkvKiBjbGVhciBETEFCOyBzZXQgOCBiaXRzLCBubyBwYXJpdHkgKi8KLQlvdXRiKDB4MDEsIFVBUlQwX0JBU0UgKyBVQVJUX0ZDUik7CS8qIGVuYWJsZSBGSUZPICovCi0Jb3V0YigweDBiLCBVQVJUMF9CQVNFICsgVUFSVF9NQ1IpOwkvKiBTZXQgRFRSIGFuZCBSVFMgYWN0aXZlICovCi0JdmFsID0gaW5iKFVBUlQwX0JBU0UgKyBVQVJUX0xTUik7CS8qIGNsZWFyIGxpbmUgc3RhdHVzICovCi0JdmFsID0gaW5iKFVBUlQwX0JBU0UgKyBVQVJUX1JCUik7CS8qIHJlYWQgcmVjZWl2ZSBidWZmZXIgKi8KLQlvdXRiKDB4MDAsIFVBUlQwX0JBU0UgKyBVQVJUX1NDUik7CS8qIHNldCBzY3JhdGNocGFkICovCi0Jb3V0YigweDAwLCBVQVJUMF9CQVNFICsgVUFSVF9JRVIpOwkvKiBzZXQgaW50ZXJydXB0IGVuYWJsZSByZWcgKi8KLQotCXJldHVybiAwOwotfQotCi0KLXZvaWQgc2VyaWFsX3NldGJyZyh2b2lkKQotewotCXVuc2lnbmVkIHNob3J0IGJkaXY7Ci0KLQliZGl2ID0gc2VyaWFsX2RpdihnZC0+YmF1ZHJhdGUpOwotCi0Jb3V0YigweDgwLCBVQVJUMF9CQVNFICsgVUFSVF9MQ1IpOwkvKiBzZXQgRExBQiBiaXQgKi8KLQlvdXRiKGJkaXYmMHhmZiwgVUFSVDBfQkFTRSArIFVBUlRfRExMKTsJLyogc2V0IGJhdWRyYXRlIGRpdmlzb3IgKi8KLQlvdXRiKGJkaXYgPj4gOCwgVUFSVDBfQkFTRSArIFVBUlRfRExNKTsvKiBzZXQgYmF1ZHJhdGUgZGl2aXNvciAqLwotCW91dGIoMHgwMywgVUFSVDBfQkFTRSArIFVBUlRfTENSKTsJLyogY2xlYXIgRExBQjsgc2V0IDggYml0cywgbm8gcGFyaXR5ICovCi19Ci0KLQotdm9pZCBzZXJpYWxfcHV0Yyhjb25zdCBjaGFyIGMpCi17Ci0JaW50IGk7Ci0KLQlpZiAoYyA9PSAnXG4nKQotCQlzZXJpYWxfcHV0YyAoJ1xyJyk7Ci0KLQkvKiBjaGVjayBUSFJFIGJpdCwgd2FpdCBmb3IgdHJhbnNtaXRlciBhdmFpbGFibGUgKi8KLQlmb3IgKGkgPSAxOyBpIDwgMzUwMDsgaSsrKSB7Ci0JCWlmICgoaW5iIChVQVJUMF9CQVNFICsgVUFSVF9MU1IpICYgMHgyMCkgPT0gMHgyMCkgewotCQkJYnJlYWs7Ci0JCX0KLQkJdWRlbGF5KDEwMCk7Ci0JfQotCW91dGIoYywgVUFSVDBfQkFTRSArIFVBUlRfVEhSKTsJLyogcHV0IGNoYXJhY3RlciBvdXQgKi8KLX0KLQotCi12b2lkIHNlcmlhbF9wdXRzKGNvbnN0IGNoYXIgKnMpCi17Ci0Jd2hpbGUgKCpzKSB7Ci0JCXNlcmlhbF9wdXRjKCpzKyspOwotCX0KLX0KLQotCi1pbnQgc2VyaWFsX2dldGModm9pZCkKLXsKLQl1bnNpZ25lZCBjaGFyIHN0YXR1cyA9IDA7Ci0KLSNpZmRlZiBDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8KLQlpZiAoc2VyaWFsX2J1ZmZlcl9hY3RpdmUpIHsKLQkJcmV0dXJuIHNlcmlhbF9idWZmZXJlZF9nZXRjKCk7Ci0JfQotI2VuZGlmCi0KLQl3aGlsZSAoMSkgewotI2lmIGRlZmluZWQoQ09ORklHX0hXX1dBVENIRE9HKQotCQlXQVRDSERPR19SRVNFVCgpOwkvKiBSZXNldCBIVyBXYXRjaGRvZywgaWYgbmVlZGVkICovCi0jZW5kaWYJLyogQ09ORklHX0hXX1dBVENIRE9HICovCi0JCXN0YXR1cyA9IGluYihVQVJUMF9CQVNFICsgVUFSVF9MU1IpOwotCQlpZiAoKHN0YXR1cyAmIGFzeW5jTFNSRGF0YVJlYWR5MSkgIT0gMHgwKSB7Ci0JCQlicmVhazsKLQkJfQotCQlpZiAoKHN0YXR1cyAmICggYXN5bmNMU1JGcmFtaW5nRXJyb3IxIHwKLQkJCQlhc3luY0xTUk92ZXJydW5FcnJvcjEgfAotCQkJCWFzeW5jTFNSUGFyaXR5RXJyb3IxICB8Ci0JCQkJYXN5bmNMU1JCcmVha0ludGVycnVwdDEgKSkgIT0gMCkgewotCQkJb3V0Yihhc3luY0xTUkZyYW1pbmdFcnJvcjEgfAotCQkJICAgICAgYXN5bmNMU1JPdmVycnVuRXJyb3IxIHwKLQkJCSAgICAgIGFzeW5jTFNSUGFyaXR5RXJyb3IxICB8Ci0JCQkgICAgICBhc3luY0xTUkJyZWFrSW50ZXJydXB0MSwgVUFSVDBfQkFTRSArIFVBUlRfTFNSKTsKLQkJfQotCX0KLQlyZXR1cm4gKDB4MDAwMDAwZmYgJiAoaW50KSBpbmIgKFVBUlQwX0JBU0UpKTsKLX0KLQotCi1pbnQgc2VyaWFsX3RzdGModm9pZCkKLXsKLQl1bnNpZ25lZCBjaGFyIHN0YXR1czsKLQotI2lmZGVmIENPTkZJR19TRVJJQUxfU09GVFdBUkVfRklGTwotCWlmIChzZXJpYWxfYnVmZmVyX2FjdGl2ZSkgewotCQlyZXR1cm4gc2VyaWFsX2J1ZmZlcmVkX3RzdGMoKTsKLQl9Ci0jZW5kaWYKLQotCXN0YXR1cyA9IGluYihVQVJUMF9CQVNFICsgVUFSVF9MU1IpOwotCWlmICgoc3RhdHVzICYgYXN5bmNMU1JEYXRhUmVhZHkxKSAhPSAweDApIHsKLQkJcmV0dXJuICgxKTsKLQl9Ci0JaWYgKChzdGF0dXMgJiAoIGFzeW5jTFNSRnJhbWluZ0Vycm9yMSB8Ci0JCQlhc3luY0xTUk92ZXJydW5FcnJvcjEgfAotCQkJYXN5bmNMU1JQYXJpdHlFcnJvcjEgIHwKLQkJCWFzeW5jTFNSQnJlYWtJbnRlcnJ1cHQxICkpICE9IDApIHsKLQkJb3V0Yihhc3luY0xTUkZyYW1pbmdFcnJvcjEgfAotCQkgICAgICBhc3luY0xTUk92ZXJydW5FcnJvcjEgfAotCQkgICAgICBhc3luY0xTUlBhcml0eUVycm9yMSAgfAotCQkgICAgICBhc3luY0xTUkJyZWFrSW50ZXJydXB0MSwgVUFSVDBfQkFTRSArIFVBUlRfTFNSKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLQotI2lmZGVmIENPTkZJR19TRVJJQUxfU09GVFdBUkVfRklGTwotCi12b2lkIHNlcmlhbF9pc3Iodm9pZCAqYXJnKQotewotCWludCBzcGFjZTsKLQlpbnQgYzsKLQlpbnQgcnhfcHV0ID0gYnVmX2luZm8ucnhfcHV0OwotCi0JaWYgKGJ1Zl9pbmZvLnJ4X2dldCA8PSByeF9wdXQpIHsKLQkJc3BhY2UgPSBDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8gLSAocnhfcHV0IC0gYnVmX2luZm8ucnhfZ2V0KTsKLQl9IGVsc2UgewotCQlzcGFjZSA9IGJ1Zl9pbmZvLnJ4X2dldCAtIHJ4X3B1dDsKLQl9Ci0KLQl3aGlsZSAoaW5iKFVBUlQwX0JBU0UgKyBVQVJUX0xTUikgJiAxKSB7Ci0JCWMgPSBpbmIoVUFSVDBfQkFTRSk7Ci0JCWlmIChzcGFjZSkgewotCQkJYnVmX2luZm8ucnhfYnVmZmVyW3J4X3B1dCsrXSA9IGM7Ci0JCQlzcGFjZS0tOwotCi0JCQlpZiAocnhfcHV0ID09IGJ1Zl9pbmZvLnJ4X2dldCkgewotCQkJCWJ1Zl9pbmZvLnJ4X2dldCsrOwotCQkJCWlmIChyeF9wdXQgPT0gQ09ORklHX1NFUklBTF9TT0ZUV0FSRV9GSUZPKSB7Ci0JCQkJCWJ1Zl9pbmZvLnJ4X2dldCA9IDA7Ci0JCQkJfQotCQkJfQotCi0JCQlpZiAocnhfcHV0ID09IENPTkZJR19TRVJJQUxfU09GVFdBUkVfRklGTykgewotCQkJCXJ4X3B1dCA9IDA7Ci0JCQkJaWYgKDAgPT0gYnVmX2luZm8ucnhfZ2V0KSB7Ci0JCQkJCWJ1Zl9pbmZvLnJ4X2dldCA9IDE7Ci0JCQkJfQotCi0JCQl9Ci0KLQkJfQotCQlpZiAoc3BhY2UgPCBDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8gLyA0KSB7Ci0JCQkvKiBTdG9wIGZsb3cgYnkgc2V0dGluZyBSVFMgaW5hY3RpdmUgKi8KLQkJCW91dGIoaW5iKFVBUlQwX0JBU0UgKyBVQVJUX01DUikgJiAoMHhGRiBeIDB4MDIpLAotCQkJICAgICAgVUFSVDBfQkFTRSArIFVBUlRfTUNSKTsKLQkJfQotCX0KLQlidWZfaW5mby5yeF9wdXQgPSByeF9wdXQ7Ci19Ci0KLXZvaWQgc2VyaWFsX2J1ZmZlcmVkX2luaXQodm9pZCkKLXsKLQlzZXJpYWxfcHV0cyAoIlN3aXRjaGluZyB0byBpbnRlcnJ1cHQgZHJpdmVuIHNlcmlhbCBpbnB1dCBtb2RlLlxuIik7Ci0JYnVmX2luZm8ucnhfYnVmZmVyID0gbWFsbG9jIChDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8pOwotCWJ1Zl9pbmZvLnJ4X3B1dCA9IDA7Ci0JYnVmX2luZm8ucnhfZ2V0ID0gMDsKLQotCWlmIChpbmIgKFVBUlQwX0JBU0UgKyBVQVJUX01TUikgJiAweDEwKSB7Ci0JCXNlcmlhbF9wdXRzICgiQ2hlY2sgQ1RTIHNpZ25hbCBwcmVzZW50IG9uIHNlcmlhbCBwb3J0OiBPSy5cbiIpOwotCQlidWZfaW5mby5jdHMgPSAxOwotCX0gZWxzZSB7Ci0JCXNlcmlhbF9wdXRzICgiV0FSTklORzogQ1RTIHNpZ25hbCBub3QgcHJlc2VudCBvbiBzZXJpYWwgcG9ydC5cbiIpOwotCQlidWZfaW5mby5jdHMgPSAwOwotCX0KLQotCWlycV9pbnN0YWxsX2hhbmRsZXIgKCBWRUNOVU1fVTAgLypVQVJUMCAqLyAvKmludCB2ZWMgKi8gLAotCQkJICAgICAgc2VyaWFsX2lzciAvKmludGVycnVwdF9oYW5kbGVyX3QgKmhhbmRsZXIgKi8gLAotCQkJICAgICAgKHZvaWQgKikgJmJ1Zl9pbmZvIC8qdm9pZCAqYXJnICovICk7Ci0KLQkvKiBFbmFibGUgIlJYIERhdGEgQXZhaWxhYmxlIiBJbnRlcnJ1cHQgb24gVUFSVCAqLwotCS8qIG91dGIoaW5iKFVBUlQwX0JBU0UgKyBVQVJUX0lFUikgfDB4MDEsIFVBUlQwX0JBU0UgKyBVQVJUX0lFUik7ICovCi0Jb3V0YigweDAxLCBVQVJUMF9CQVNFICsgVUFSVF9JRVIpOwotCi0JLyogU2V0IERUUiBhbmQgUlRTIGFjdGl2ZSwgZW5hYmxlIGludGVycnVwdHMgICovCi0Jb3V0YihpbmIgKFVBUlQwX0JBU0UgKyBVQVJUX01DUikgfCAweDBiLCBVQVJUMF9CQVNFICsgVUFSVF9NQ1IpOwotCi0JLyogU2V0dXAgVUFSVCBGSUZPOiBSWCB0cmlnZ2VyIGxldmVsOiAxIGJ5dGUsIEVuYWJsZSBGSUZPICovCi0Jb3V0YiggLyooMSA8PCA2KSB8Ki8gIDEsIFVBUlQwX0JBU0UgKyBVQVJUX0ZDUik7Ci0KLQlzZXJpYWxfYnVmZmVyX2FjdGl2ZSA9IDE7Ci19Ci0KLXZvaWQgc2VyaWFsX2J1ZmZlcmVkX3B1dGMgKGNvbnN0IGNoYXIgYykKLXsKLQlpbnQgaTsKLQkvKiBXYWl0IGZvciBDVFMgKi8KLSNpZiBkZWZpbmVkKENPTkZJR19IV19XQVRDSERPRykKLQl3aGlsZSAoIShpbmIgKFVBUlQwX0JBU0UgKyBVQVJUX01TUikgJiAweDEwKSkKLQkJV0FUQ0hET0dfUkVTRVQgKCk7Ci0jZWxzZQotCWlmIChidWZfaW5mby5jdHMpICB7Ci0JCWZvciAoaT0wO2k8MTAwMDtpKyspIHsKLQkJCWlmICgoaW5iIChVQVJUMF9CQVNFICsgVUFSVF9NU1IpICYgMHgxMCkpIHsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCQlpZiAoaSE9MTAwMCkgewotCQkJYnVmX2luZm8uY3RzID0gMDsKLQkJfQotCX0gZWxzZSB7Ci0JCWlmICgoaW5iIChVQVJUMF9CQVNFICsgVUFSVF9NU1IpICYgMHgxMCkpIHsKLQkJCWJ1Zl9pbmZvLmN0cyA9IDE7Ci0JCX0KLQl9Ci0KLSNlbmRpZgotCXNlcmlhbF9wdXRjIChjKTsKLX0KLQotdm9pZCBzZXJpYWxfYnVmZmVyZWRfcHV0cyhjb25zdCBjaGFyICpzKQotewotCXNlcmlhbF9wdXRzIChzKTsKLX0KLQotaW50IHNlcmlhbF9idWZmZXJlZF9nZXRjKHZvaWQpCi17Ci0JaW50IHNwYWNlOwotCWludCBjOwotCWludCByeF9nZXQgPSBidWZfaW5mby5yeF9nZXQ7Ci0JaW50IHJ4X3B1dDsKLQotI2lmIGRlZmluZWQoQ09ORklHX0hXX1dBVENIRE9HKQotCXdoaWxlIChyeF9nZXQgPT0gYnVmX2luZm8ucnhfcHV0KQotCQlXQVRDSERPR19SRVNFVCAoKTsKLSNlbHNlCi0Jd2hpbGUgKHJ4X2dldCA9PSBidWZfaW5mby5yeF9wdXQpOwotI2VuZGlmCi0JYyA9IGJ1Zl9pbmZvLnJ4X2J1ZmZlcltyeF9nZXQrK107Ci0JaWYgKHJ4X2dldCA9PSBDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8pIHsKLQkJcnhfZ2V0ID0gMDsKLQl9Ci0JYnVmX2luZm8ucnhfZ2V0ID0gcnhfZ2V0OwotCi0JcnhfcHV0ID0gYnVmX2luZm8ucnhfcHV0OwotCWlmIChyeF9nZXQgPD0gcnhfcHV0KSB7Ci0JCXNwYWNlID0gQ09ORklHX1NFUklBTF9TT0ZUV0FSRV9GSUZPIC0gKHJ4X3B1dCAtIHJ4X2dldCk7Ci0JfSBlbHNlIHsKLQkJc3BhY2UgPSByeF9nZXQgLSByeF9wdXQ7Ci0JfQotCWlmIChzcGFjZSA+IENPTkZJR19TRVJJQUxfU09GVFdBUkVfRklGTyAvIDIpIHsKLQkJLyogU3RhcnQgZmxvdyBieSBzZXR0aW5nIFJUUyBhY3RpdmUgKi8KLQkJb3V0YihpbmIgKFVBUlQwX0JBU0UgKyBVQVJUX01DUikgfCAweDAyLCBVQVJUMF9CQVNFICsgVUFSVF9NQ1IpOwotCX0KLQotCXJldHVybiBjOwotfQotCi1pbnQgc2VyaWFsX2J1ZmZlcmVkX3RzdGModm9pZCkKLXsKLQlyZXR1cm4gKGJ1Zl9pbmZvLnJ4X2dldCAhPSBidWZfaW5mby5yeF9wdXQpID8gMSA6IDA7Ci19Ci0KLSNlbmRpZgkvKiBDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8gKi8KLQotCi0jaWYgZGVmaW5lZChDT05GSUdfQ01EX0tHREIpCi0vKgotICBBUyBIQVJOT0lTIDogYWNjb3JkaW5nIHRvIENPTkZJR19LR0RCX1NFUl9JTkRFWCBrZ2RiIHVzZXMgc2VyaWFsIHBvcnQKLSAgbnVtYmVyIDAgb3IgbnVtYmVyIDEKLSAgLSBpZiBDT05GSUdfS0dEQl9TRVJfSU5ERVggPSAxID0+IHNlcmlhbCBwb3J0IG51bWJlciAwIDoKLSAgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBhbHJlYWR5IGRvbmUKLSAgLSBpZiBDT05GSUdfS0dEQl9TRVJfSU5ERVggPSAyID0+IHNlcmlhbCBwb3J0IG51bWJlciAxIDoKLSAgY29uZmlndXJlIHBvcnQgMSBmb3Igc2VyaWFsIEkvTyB3aXRoIHJhdGUgPSBDT05GSUdfS0dEQl9CQVVEUkFURQotKi8KLSNpZiAoQ09ORklHX0tHREJfU0VSX0lOREVYICYgMikKLXZvaWQga2dkYl9zZXJpYWxfaW5pdCh2b2lkKQotewotCXZvbGF0aWxlIGNoYXIgdmFsOwotCWJkaXYgPSBzZXJpYWxfZGl2IChDT05GSUdfS0dEQl9CQVVEUkFURSk7Ci0KLQkvKgotCSAqIEluaXQgb25ib2FyZCAxNjU1MCBVQVJUCi0JICovCi0Jb3V0YigweDgwLCBVQVJUMV9CQVNFICsgVUFSVF9MQ1IpOwkvKiBzZXQgRExBQiBiaXQgKi8KLQlvdXRiKChiZGl2ICYgMHhmZiksIFVBUlQxX0JBU0UgKyBVQVJUX0RMTCk7CS8qIHNldCBkaXZpc29yIGZvciA5NjAwIGJhdWQgKi8KLQlvdXRiKChiZGl2ID4+IDggICksIFVBUlQxX0JBU0UgKyBVQVJUX0RMTSk7CS8qIHNldCBkaXZpc29yIGZvciA5NjAwIGJhdWQgKi8KLQlvdXRiKDB4MDMsIFVBUlQxX0JBU0UgKyBVQVJUX0xDUik7CS8qIGxpbmUgY29udHJvbCA4IGJpdHMgbm8gcGFyaXR5ICovCi0Jb3V0YigweDAwLCBVQVJUMV9CQVNFICsgVUFSVF9GQ1IpOwkvKiBkaXNhYmxlIEZJRk8gKi8KLQlvdXRiKDB4MDAsIFVBUlQxX0JBU0UgKyBVQVJUX01DUik7CS8qIG5vIG1vZGVtIGNvbnRyb2wgRFRSIFJUUyAqLwotCXZhbCA9IGluYihVQVJUMV9CQVNFICsgVUFSVF9MU1IpOwkvKiBjbGVhciBsaW5lIHN0YXR1cyAqLwotCXZhbCA9IGluYihVQVJUMV9CQVNFICsgVUFSVF9SQlIpOwkvKiByZWFkIHJlY2VpdmUgYnVmZmVyICovCi0Jb3V0YigweDAwLCBVQVJUMV9CQVNFICsgVUFSVF9TQ1IpOwkvKiBzZXQgc2NyYXRjaHBhZCAqLwotCW91dGIoMHgwMCwgVUFSVDFfQkFTRSArIFVBUlRfSUVSKTsJLyogc2V0IGludGVycnVwdCBlbmFibGUgcmVnICovCi19Ci0KLQotdm9pZCBwdXREZWJ1Z0NoYXIoY29uc3QgY2hhciBjKQotewotCWlmIChjID09ICdcbicpCi0JCXNlcmlhbF9wdXRjICgnXHInKTsKLQotCW91dGIoYywgVUFSVDFfQkFTRSArIFVBUlRfVEhSKTsJLyogcHV0IGNoYXJhY3RlciBvdXQgKi8KLQotCS8qIGNoZWNrIFRIUkUgYml0LCB3YWl0IGZvciB0cmFuc2ZlciBkb25lICovCi0Jd2hpbGUgKChpbmIoVUFSVDFfQkFTRSArIFVBUlRfTFNSKSAmIDB4MjApICE9IDB4MjApOwotfQotCi0KLXZvaWQgcHV0RGVidWdTdHIoY29uc3QgY2hhciAqcykKLXsKLQl3aGlsZSAoKnMpIHsKLQkJc2VyaWFsX3B1dGMoKnMrKyk7Ci0JfQotfQotCi0KLWludCBnZXREZWJ1Z0NoYXIodm9pZCkKLXsKLQl1bnNpZ25lZCBjaGFyIHN0YXR1cyA9IDA7Ci0KLQl3aGlsZSAoMSkgewotCQlzdGF0dXMgPSBpbmIoVUFSVDFfQkFTRSArIFVBUlRfTFNSKTsKLQkJaWYgKChzdGF0dXMgJiBhc3luY0xTUkRhdGFSZWFkeTEpICE9IDB4MCkgewotCQkJYnJlYWs7Ci0JCX0KLQkJaWYgKChzdGF0dXMgJiAoIGFzeW5jTFNSRnJhbWluZ0Vycm9yMSB8Ci0JCQkJYXN5bmNMU1JPdmVycnVuRXJyb3IxIHwKLQkJCQlhc3luY0xTUlBhcml0eUVycm9yMSAgfAotCQkJCWFzeW5jTFNSQnJlYWtJbnRlcnJ1cHQxICkpICE9IDApIHsKLQkJCW91dGIoYXN5bmNMU1JGcmFtaW5nRXJyb3IxIHwKLQkJCSAgICAgYXN5bmNMU1JPdmVycnVuRXJyb3IxIHwKLQkJCSAgICAgYXN5bmNMU1JQYXJpdHlFcnJvcjEgIHwKLQkJCSAgICAgYXN5bmNMU1JCcmVha0ludGVycnVwdDEsIFVBUlQxX0JBU0UgKyBVQVJUX0xTUik7Ci0JCX0KLQl9Ci0JcmV0dXJuICgweDAwMDAwMGZmICYgKGludCkgaW5iKFVBUlQxX0JBU0UpKTsKLX0KLQotCi12b2lkIGtnZGJfaW50ZXJydXB0aWJsZShpbnQgeWVzKQotewotCXJldHVybjsKLX0KLQotI2Vsc2UJLyogISAoQ09ORklHX0tHREJfU0VSX0lOREVYICYgMikgKi8KLQotdm9pZCBrZ2RiX3NlcmlhbF9pbml0KHZvaWQpCi17Ci0Jc2VyaWFsX3ByaW50ZiAoIltvbiBzZXJpYWxdICIpOwotfQotCi12b2lkIHB1dERlYnVnQ2hhcihpbnQgYykKLXsKLQlzZXJpYWxfcHV0YyAoYyk7Ci19Ci0KLXZvaWQgcHV0RGVidWdTdHIoY29uc3QgY2hhciAqc3RyKQotewotCXNlcmlhbF9wdXRzIChzdHIpOwotfQotCi1pbnQgZ2V0RGVidWdDaGFyKHZvaWQpCi17Ci0JcmV0dXJuIHNlcmlhbF9nZXRjICgpOwotfQotCi12b2lkIGtnZGJfaW50ZXJydXB0aWJsZShpbnQgeWVzKQotewotCXJldHVybjsKLX0KLSNlbmRpZgkvKiAoQ09ORklHX0tHREJfU0VSX0lOREVYICYgMikgKi8KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi9ib2FyZC5jIGIvYXJjaC9pMzg2L2xpYi9ib2FyZC5jCmluZGV4IDk0N2E4ZWMuLjcxMTVhMmYgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvYm9hcmQuYworKysgYi9hcmNoL2kzODYvbGliL2JvYXJkLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxtYWxsb2MuaD4KICNpbmNsdWRlIDxuZXQuaD4KICNpbmNsdWRlIDxpZGUuaD4KKyNpbmNsdWRlIDxzZXJpYWwuaD4KICNpbmNsdWRlIDxhc20vdS1ib290LWkzODYuaD4KICNpbmNsdWRlIDxlbGYuaD4KIApAQCAtMTQ5LDcgKzE1MCw2IEBACiB0eXBlZGVmIGludCAoaW5pdF9mbmNfdCkgKHZvaWQpOwogCiBpbml0X2ZuY190ICppbml0X3NlcXVlbmNlW10gPSB7Ci0Jc2VyaWFsX2luaXQsCiAJY3B1X2luaXRfciwJCS8qIGJhc2ljIGNwdSBkZXBlbmRlbnQgc2V0dXAgKi8KIAlib2FyZF9lYXJseV9pbml0X3IsCS8qIGJhc2ljIGJvYXJkIGRlcGVuZGVudCBzZXR1cCAqLwogCWRyYW1faW5pdCwJCS8qIGNvbmZpZ3VyZSBhdmFpbGFibGUgUkFNIGJhbmtzICovCkBAIC0yNzcsNiArMjc3LDkgQEAKIAl9CiAJc2hvd19ib290X3Byb2dyZXNzKDB4MjMpOwogCisjaWZkZWYgQ09ORklHX1NFUklBTF9NVUxUSQorCXNlcmlhbF9pbml0aWFsaXplKCk7CisjZW5kaWYKIAkvKiBjb25maWd1cmUgYXZhaWxhYmxlIEZMQVNIIGJhbmtzICovCiAJc2l6ZSA9IGZsYXNoX2luaXQoKTsKIAlkaXNwbGF5X2ZsYXNoX2NvbmZpZyhzaXplKTsKZGlmZiAtLWdpdCBhL2JvYXJkL2VORVQvZU5FVC5jIGIvYm9hcmQvZU5FVC9lTkVULmMKaW5kZXggZjc5NGJlYi4uNTJlYTE0MCAxMDA2NDQKLS0tIGEvYm9hcmQvZU5FVC9lTkVULmMKKysrIGIvYm9hcmQvZU5FVC9lTkVULmMKQEAgLTExMSw4ICsxMTEsOSBAQAogCXdyaXRldygweDA2MTUsICZzYzUyMF9tbWNyLT5yb21jczFjdGwpOwogCXdyaXRldygweDA2MTUsICZzYzUyMF9tbWNyLT5yb21jczJjdGwpOwogCi0Jd3JpdGViKDB4MDIsICZzYzUyMF9tbWNyLT5hZGRkZWNjdGwpOworCXdyaXRlYigweDAwLCAmc2M1MjBfbW1jci0+YWRkZGVjY3RsKTsKIAl3cml0ZWIoMHgwNywgJnNjNTIwX21tY3ItPnVhcnQxY3RsKTsKKwl3cml0ZWIoMHgwNywgJnNjNTIwX21tY3ItPnVhcnQyY3RsKTsKIAl3cml0ZWIoMHgwNiwgJnNjNTIwX21tY3ItPnN5c2FyYmN0bCk7CiAJd3JpdGV3KDB4MDAwMywgJnNjNTIwX21tY3ItPnN5c2FyYm1lbmIpOwogCmRpZmYgLS1naXQgYS9jb21tb24vc2VyaWFsLmMgYi9jb21tb24vc2VyaWFsLmMKaW5kZXggMDY4MmZhYS4uZmNlYWJmYSAxMDA2NDQKLS0tIGEvY29tbW9uL3NlcmlhbC5jCisrKyBiL2NvbW1vbi9zZXJpYWwuYwpAQCAtNDEsNyArNDEsOCBAQAogI2VsaWYgZGVmaW5lZChDT05GSUdfNDA1R1ApIHx8IGRlZmluZWQoQ09ORklHXzQwNUNSKSB8fCBkZWZpbmVkKENPTkZJR180NDApIFwKICAgIHx8IGRlZmluZWQoQ09ORklHXzQwNUVQKSB8fCBkZWZpbmVkKENPTkZJR180MDVFWikgfHwgZGVmaW5lZChDT05GSUdfNDA1RVgpIFwKICAgIHx8IGRlZmluZWQoQ09ORklHX01QQzV4eHgpIHx8IGRlZmluZWQoQ09ORklHX01QQzgzeHgpIFwKLSAgIHx8IGRlZmluZWQoQ09ORklHX01QQzg1eHgpIHx8IGRlZmluZWQoQ09ORklHX01QQzg2eHgpCisgICB8fCBkZWZpbmVkKENPTkZJR19NUEM4NXh4KSB8fCBkZWZpbmVkKENPTkZJR19NUEM4Nnh4KSBcCisgICB8fCBkZWZpbmVkKENPTkZJR19TWVNfU0M1MjApCiAjaWYgZGVmaW5lZChDT05GSUdfQ09OU19JTkRFWCkgJiYgZGVmaW5lZChDT05GSUdfU1lTX05TMTY1NTBfU0VSSUFMKQogI2lmIChDT05GSUdfQ09OU19JTkRFWD09MSkKIAlyZXR1cm4gJmVzZXJpYWwxX2RldmljZTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9lTkVULmggYi9pbmNsdWRlL2NvbmZpZ3MvZU5FVC5oCmluZGV4IDZhNjhiZjQuLjA1ZDdkYjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9lTkVULmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2VORVQuaApAQCAtMjEsNiArMjEsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCisjaW5jbHVkZSA8YXNtL2libXBjLmg+CiAvKgogICogYm9hcmQvY29uZmlnLmggLSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGJvYXJkIHNwZWNpZmljCiAgKi8KQEAgLTU1LDYgKzU2LDI2IEBACiAjdW5kZWYgQ09ORklHX0hXX1dBVENIRE9HCiAKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICogU2VyaWFsIENvbmZpZ3VyYXRpb24KKyAgKi8KKyNkZWZpbmUgQ09ORklHX1NFUklBTF9NVUxUSQorI3VuZGVmIENPTkZJR19TRVJJQUxfU09GVFdBUkVfRklGTworI2RlZmluZSBDT05GSUdfQ09OU19JTkRFWAkJMQorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTAKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX1NFUklBTAorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfUkVHX1NJWkUJMQorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfQ0xLCQkxODQzMjAwCisjZGVmaW5lIENPTkZJR19CQVVEUkFURQkJCTk2MDAKKyNkZWZpbmUgQ09ORklHX1NZU19CQVVEUkFURV9UQUJMRQlcCisJezMwMCwgNjAwLCAxMjAwLCAyNDAwLCA0ODAwLCA5NjAwLCAxOTIwMCwgMzg0MDAsMTE1MjAwfQorCisjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9DT00xCQlVQVJUMF9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9DT00yCQlVQVJUMV9CQVNFCisjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9DT00zCQkoMHgxMDAwICsgVUFSVDBfQkFTRSkKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX0NPTTQJCSgweDEwMDAgKyBVQVJUMV9CQVNFKQorI2RlZmluZSBDT05GSUdfU1lTX05TMTY1NTBfUE9SVF9NQVBQRUQKKworIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgKiBWaWRlbyBDb25maWd1cmF0aW9uCiAgICovCiAjdW5kZWYgQ09ORklHX1ZJREVPCQkJLyogTm8gVmlkZW8gSGFyZHdhcmUgKi8KQEAgLTY1LDggKzg2LDYgQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JKENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0KQogCi0jZGVmaW5lIENPTkZJR19CQVVEUkFURQkJOTYwMAotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBDb21tYW5kIGxpbmUgY29uZmlndXJhdGlvbi4KICAqLwpAQCAtMTIzLDkgKzE0Miw2IEBACiAKICNkZWZpbmUJQ09ORklHX1NZU19IWgkJCTEwMjQJCS8qIGluY3JlbWVudGVyIGZyZXE6IDFrSHogKi8KIAotCQkJCQkJLyogdmFsaWQgYmF1ZHJhdGVzICovCi0jZGVmaW5lIENPTkZJR19TWVNfQkFVRFJBVEVfVEFCTEUJeyA5NjAwLCAxOTIwMCwgMzg0MDAsIDU3NjAwLCAxMTUyMDAgfQotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBTRFJBTSBDb25maWd1cmF0aW9uCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2VyaWFsLmggYi9pbmNsdWRlL3NlcmlhbC5oCmluZGV4IDExMWVkYmUuLjY1MTNkOGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc2VyaWFsLmgKKysrIGIvaW5jbHVkZS9zZXJpYWwuaApAQCAtMjYsNyArMjYsOCBAQAogI2lmIGRlZmluZWQoQ09ORklHXzQwNUdQKSB8fCBkZWZpbmVkKENPTkZJR180MDVDUikgfHwgZGVmaW5lZChDT05GSUdfNDQwKSB8fCBcCiAgICAgZGVmaW5lZChDT05GSUdfNDA1RVApIHx8IGRlZmluZWQoQ09ORklHXzQwNUVaKSB8fCBkZWZpbmVkKENPTkZJR180MDVFWCkgfHwgXAogICAgIGRlZmluZWQoQ09ORklHX01QQzV4eHgpIHx8IGRlZmluZWQoQ09ORklHX01QQzgzeHgpIHx8IFwKLSAgICBkZWZpbmVkKENPTkZJR19NUEM4NXh4KSB8fCBkZWZpbmVkKENPTkZJR19NUEM4Nnh4KQorICAgIGRlZmluZWQoQ09ORklHX01QQzg1eHgpIHx8IGRlZmluZWQoQ09ORklHX01QQzg2eHgpIHx8IFwKKyAgICBkZWZpbmVkKENPTkZJR19TWVNfU0M1MjApCiBleHRlcm4gc3RydWN0IHNlcmlhbF9kZXZpY2Ugc2VyaWFsMF9kZXZpY2U7CiBleHRlcm4gc3RydWN0IHNlcmlhbF9kZXZpY2Ugc2VyaWFsMV9kZXZpY2U7CiAjaWYgZGVmaW5lZChDT05GSUdfU1lTX05TMTY1NTBfU0VSSUFMKQo=